package com.yimi.policyservice.service;


import com.github.pagehelper.Page;
import com.yimi.policyservice.dto.enums.FunctionCodeEnum;
import com.yimi.policyservice.entity.base.system.SysOrganization;
import com.yimi.policyservice.entity.base.system.SysUser;
import com.yimi.policyservice.dto.user.*;

import java.util.List;

/**
 * @author jack
 */
public interface UserService {

    /**
     * 用户注册
     * @param bean
     * @return
     */
    SysUser regist(User4Create bean);

    /**
     * 登录
     * @param bean
     * @return
     */
    UserLogin4Get login (User4Login bean);


    /**
     * 校验
     * @param loginName
     */
    void checkLoginName(String loginName) ;

    /**
     * 校验登录
     * @param header
     * @param code
     */
    void checkLogin(String header, FunctionCodeEnum codeEnum);

    /**
     * 短信验证码修改密码
     * @param bean
     */
    void updatePasswordBySmsCode(Password4Put bean);

    /**
     * 旧密码修改密码
     * @param userId
     * @param bean
     */
    void updatePasswordByOldPassword(String userId, Password4Put bean);

    /**
     * 修改用户个人资料
     * @param userId
     * @param put
     */
    void update(String userId, User4Put put);

    /**
     * 登出
     * @param token
     */
    void loginOut(String token);

    /**
     * 搜索
     * @param roleId
     * @param deptId
     * @param name
     * @return
     */
    Page<UserDto> search(List<String> roleIds,String deptId, String name);

    /**
     * 删除用户
     * @param ids
     */
    void deleteUsers(List<String> ids);

    /**
     * 获取所有部门
     * @return
     */
    List<SysOrganization> findAllDept();

    /**
     * 用户详情
     * @param id
     * @return
     */
    UserDto getOne(String id);

    List<UserDto> findAllUser();

    List<String> findUserAllRoleId(String id);

    void updateUser(String id, UserDto user);

    void updatePhone(String phone, String id);

    void synUser(Integer page,Integer size,String token);
}
